#ifndef __WIZ_ARCHIVE_SERIALIZER_READER_HPP__SHANHAOBO_19800429__
#define __WIZ_ARCHIVE_SERIALIZER_READER_HPP__SHANHAOBO_19800429__

#include "./WizArchiveSerializer.hpp"

#include "./WizArchiveSerializerReaderBase.hpp"

namespace Wiz
{
    namespace Archive
    {
        namespace Serializer
        {
            namespace Reader
            {
                template<class ArchiveT, class DataT>
                struct Type : public ::Wiz::Archive::Serializer::Base::Type
                {
                    virtual ::Wiz::Void::Type ReadObjectData(
                        ::Wiz::Archive::Reader::Base::Ref   InArRef, 
                        ::Wiz::Void::Ptr                    InDataPtr,
                        ::Wiz::Archive::VerNum::In          InVerNum
                    ) const
                    {
                        ::Wiz::Archive::Serializer::SerializeADL(
                            ::Wiz::Cast::Static<ArchiveT&>(InArRef),
                            *::Wiz::Cast::Static<DataT *>(InDataPtr),
                            InVerNum
                        );
                    }
                };
            } /// end of namespace Reader
        } /// end of namespace Serializer
    } /// end of namespace Archive
} /// end of namespace Wiz

#endif /*__WIZ_ARCHIVE_SERIALIZER_READER_HPP__SHANHAOBO_19800429__*/
